// #include<iostream>
// using namespace std;
// int main()
// {

//     int i=0;
//     //对象流入输出设备，在显示器中打印对象中存储的值
//     cout<<i<<endl;
//     cerr<<i<<endl;
//     clog<<i<<endl;
//     return 0;

// }

// class Date
// {
// public:
// 	Date(int _year = 0, int _month = 0, int _day = 0)
// 		: year(_year)
// 		, month(_month)
// 		, day(_day)
// 	{}

// 	operator bool()
// 	{
// 		if (year < 1)
// 			return false;
// 		else
// 			return true;
// 	}

// 	friend ostream& operator>>(ostream& os, const Date& d);
// 	friend istream& operator<<(istream& is, Date& d);
// public:
// 	int year;
// 	int month;
// 	int day;
// };

// ostream& operator<<(ostream& os, const Date& d)
// {
// 	return os << d.year << " " << d.month << " " << d.day;
// }

// istream& operator>>(istream& is, Date& d)
// {
// 	return is >> d.year >> d.month >> d.day;
// }
// // 转换函数：对该对象进行判断时，流对象会自动调用给对象，返回一个bool值
// void Operator_Bool()
// {
// 	Date d;
// 	d = 20;
// 	if (d)
// 		cout << "yes" << endl;
// 	else
// 		cout << "no" << endl;
// }

// void Test1()
// {
// 	Date d;
// 	cin >> d;
// 	cout << d << endl;
// }
// void Test2()
// {
// 	// 自动识别类型的本质--函数重载
// 	// 内置类型可以直接使用--因为库里面ostream类型已经实现了
// 	int i = 1;
// 	double j = 2.2;
// 	cout << i << endl;
// 	cout << j << endl;
// }



// int  main()
// {
//     Date d;
//     // cin>>d;
//     // cout<<d<<endl;

// 	//Test1();
// 	//Test2();

// 	Operator_Bool();

//     return 0;
// }


#include <iostream>
#include <fstream>
#include<string>
#include<fstream>
using namespace std;

int main()
{
	// 以读的方式打开文件
	ifstream ifs("Test.cpp", ios::in);
	while (ifs)
	{
		// get都字符时遇到空格或回车不会停下
		char ch = ifs.get();
		cout << ch;
	}


	// 此时ifs文件指针已到尾部，需要clear和seekg进行指针重置
	ifs.clear();
	// ios::beg状态：从文件头指针开始定位
	ifs.seekg(0, ios::beg);


	// 以写的方式打开文件
	ofstream ofs("D:\\ desktop\test\test-io", ios::out);
	while (ifs)
	{
		char ch = ifs.get();
		ofs << ch;
	}
	return 0;
}
